<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="utf-8" />
		<script src="../../../list.js"></script>
		<script src="../../../page.js"></script>
		<link type="text/css" rel="stylesheet" href="../../../page.css" />
	</head>
	<body>
		[page:Geometry] &rarr;
		
		<h1>[name]</h1>

		<div class="desc">Creates a tube that extrudes along a 3d curve</div>

		<h2>Example</h2>
		
<code>
var CustomSinCurve = THREE.Curve.create(
    function ( scale ) { //custom curve constructor
        this.scale = (scale === undefined) ? 1 : scale;
    },
    
    function ( t ) { //getPoint: t is between 0-1
        var tx = t * 3 - 1.5,
            ty = Math.sin( 2 * Math.PI * t ),
            tz = 0;
        
        return new THREE.Vector3(tx, ty, tz).multiplyScalar(this.scale);
    }
);

var path = new CustomSinCurve( 10 );

var geometry = new THREE.TubeGeometry(
    path,  //path
    20,    //segments
    2,     //radius
    8,     //radiusSegments
    false  //closed
);
</code>

		<h2>Constructor</h2>


		<h3>[name]([page:Curve path], [page:Integer segments], [page:Float radius], [page:Integer radiusSegments], [page:Boolean closed])</h3>
		<div>
		path — [page:Curve] - A path that inherits from the [page:Curve] base class<br />
		segments — [page:Integer] - The number of segments that make up the tube, default is 64<br />
		radius — [page:Float] - The radius of the tube, default is 1<br />
		radiusSegments — [page:Integer] - The number of segments that make up the cross-section, default is 8 <br />
		closed — [page:Float] Is the tube open or closed, default is false <br />
		</div>


		<h2>Properties</h2>

		<h3>[property:Object parameters]</h3>
		<div>
		An object with all of the parameters that were used to generate the geometry.
		</div> 

		<h3>[property:Array tangents]</h3>
		<div>
		An array of [page:Vector3] tangents
		</div> 

		<h3>[property:Array normals]</h3>
		<div>
		An array of [page:Vector3] normals
		</div> 

		<h3>[property:Array binormals]</h3>
		<div>
		An array of [page:Vector3] binormals
		</div> 


		<h2>Methods</h2>
		

		<h3>THREE.TubeGeometry.FrenetFrames([page:Curve path], [page:Integer segments], [page:Boolean closed])</h3>
		<div>
		path — A path that inherits from the [page:Curve] base class <br />
		segments — The number of segments that make up the tube <br />
		closed — Is the tube open or closed
		</div>
		<div>
		A static method that generates the Frenet Frames. This is internally run on any new TubeGeometry and then the
		generated tangents, normals, and binormals are exposed as properties on the TubeGeometry object.
		</div>
		
		<h2>Source</h2>

		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
	</body>
</html>
